package com.errol.sync.sync.pojo;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 同步参数扩展，用户注解实体类
 *
 * @author zhang xiao bin
 * @version v1.0
 * @date 2021/08/23
 * @since v
 **/
@Target({ElementType.FIELD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface SyncAdvisor {

    /**
     * - 需要注解并定义在实体类上
     * 从源表查询使用，添加额外的查询参数，不要加 where
     * 如 field_a=1 and field_b=2
     */
    String additionalWhereClause() default "";

    /**
     * - 需要注解并定义在类属性上
     * 源数据表中的字段名，注意是表字段名
     * 从源表查询使用，自动替换为当前库中的名称
     */
    String fieldNameInSourceDatabase() default "";

    /**
     * - 需要注解并定义在类属性上
     * 从源表查询使用，是否要拼接到 select 子句
     * true 表示不从源数据表查询该字段，默认要都要查询
     */
    boolean notExistInSourceDatabase() default false;
}
